接下來就要把我們清理過的 raw data 來進行數據集的劃分了!劃分的意思是把「原先的數據分為訓練集、驗證集跟測試集」,這樣才可以避免我們的模型只適用於我們的訓練資料,而碰到新的資料模型就失效了,也就是俗稱的「過擬合」。
我們的比例採用 60 20 20,也就是 60% 的數據進行訓練,20% 的數據進行驗證,20% 的數據進行測試,比例他是可以隨時調整的,只是訓練的資料通常一定都是最多的,畢竟越多資料訓練相對的也會精確一些!
from sklearn.model_selection import train_test_split
import numpy as np
# 將特徵和目標變量分開
X = df_cleaned.drop('房價(萬)', axis=1) # 假設 '房價(萬)' 是我們要預測的目標
y = df_cleaned['房價(萬)']
# 首先,分割出測試集
X_temp, X_test, y_temp, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 然後,從剩下的數據中分割出驗證集
X_train, X_val, y_train, y_val = train_test_split(X_temp, y_temp, test_size=0.25, random_state=42) # 0.25 x 0.8 = 0.2
# 列出各集合的大小
print(f"訓練集大小: {X_train.shape[0]}")
print(f"驗證集大小: {X_val.shape[0]}")
print(f"測試集大小: {X_test.shape[0]}")
# 保存劃分後的數據集
np.save('X_train.npy', X_train)
np.save('y_train.npy', y_train)
np.save('X_val.npy', X_val)
np.save('y_val.npy', y_val)
np.save('X_test.npy', X_test)
np.save('y_test.npy', y_test)
備註:random_state=42
確保每次運行程式的時候得到的都是相同的劃分結果,這對於實驗的可重複性很重要。
這樣你就可以看到你的訓練集、驗證集跟測試集的資料數量了!數據集劃分可以說是模型訓練當中最重要的一個步驟了,畢竟一個模型是否有效很大部分就是跟他的訓練資料有關,以及這個模型的準確性,所以如果數據充足的話,其實越多的數據訓練是越好的
等後續模型訓練完成,也可以丟類似功用的數據給他訓練,就可以增加模型的運用性了!接下來就來到了「特徵工程」的環節了,讓我們繼續學習下去吧~